package com.bupt.vueblog.dao;

import com.bupt.vueblog.domain.entity.Relation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 谭继好
 * @Description 处理关系的变化，如点赞或收藏某篇博客或某条评论
 * @date 2024-04-09 12:59
 */
@Mapper
public interface RelationDAO {

    // 查询在查博客和评论的时候一起查出来，不再单独查询
//    Relation select(Relation data);

    // 这里以点赞为例，收藏也是一样
    // 用户点赞之后记录在后端，方便下次展示
    void insert(Relation data);

    // 用户取消点赞之后删除对应数据，无法得到点赞的id
    // 只能通过用户ID和文章ID联合查询
    void delete(Relation data);

    // 删除评论下所有点赞关系，删除评论时调用
    void deleteComment(Integer commentId);

    // 删除用户对文章的所有点赞关系，删除用户时调用
    void deleteArticleUser(Integer userId);

    // 删除用户对评论的所有点赞关系，删除用户时调用
    void deleteCommentUser(Integer userId);

    // 删除文章所有点赞关系，删除文章时调用
    void deleteArticle(Integer articleId);

    // 删除文章列表的所有点赞关系，删除用户时调用
    void deleteAllArticle(@Param("ids") List<Integer> list);
}
